/*
 * TetisDB
 *
 * Classe principal da hierarquia.
 */

package br.com.tetisdb.lang;

import java.lang.reflect.Field;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

/**
 * Responsavel por conter as implementacoes padroes de todos os objetos
 */
public class TetisObject {    
    public static Logger tetisLogger = Logger.getLogger(TetisObject.class);
    
    static {
        PropertyConfigurator.configure("log4j.properties");
        //tetisLogger.setLevel(Level.);
    }
    
    public TetisObject() {
    }
    
    @Override
    public String toString() {
        StringBuilder retorno = new StringBuilder(this.getClass().getName());
        Field[] attrs = this.getClass().getDeclaredFields();
        
        for(Field attr : attrs) {
            if(!attr.isAccessible()) {
                attr.setAccessible(true);
            }
            
            Object o;
            try {
                o = ((attr.get(this) != null) ? attr.get(this) : "null");               
                retorno.append(" ["+attr.getName()+"]=("+o+")"); 
            } catch (IllegalArgumentException ex) {
                tetisLogger.error(ex.getMessage(), ex);
            } catch (IllegalAccessException ex) {
                tetisLogger.error(ex.getMessage(), ex);
            }                       
        }
        
        return retorno.toString();
    }
    
    
}
